#ifndef __losor_rule_blueprint_h__
#define __losor_rule_blueprint_h__

#include <list>
#include "fact.h"
using namespace std;

/***
 * the most important problem is where rules come from?
 * - two objects appear at the same time `all the time`
 * - two objects appear in the same sequence `all the time`
 * - two don't appear at the same time
 * - two don't appear in the same sequence
 *
 * how I can know they are `are the time`?
 * - for "at the same time", I can test this: I put some objects out,
 *   and wait for the rest ones
 *
 * rule combine, how?
 * 
 */
class rule
{
	public:
		rule();
		virtual ~rule();

	public:
		virtual long exe();

	protected:
		list<object*> m_effect;
		list<object*> m_condition;
}

#endif

